package com.rainyun.rc.common;

import java.util.Objects;

/**版本工具类*/
public class VersionUtil {
	
	/**获得类的版本(根据ClassVersion注解)*/
	public static String getVersion(Class<?> clazz){
		ClassVersion v = clazz.getAnnotation(ClassVersion.class);
		if(v!=null) {
			return v.value();
		}else return null;
	}
	
	/**版本对比器(大小比较)(版本格式 x.y.z)<br>
	 * 返回:<br>
	 * 0代表两者完全相等<br>
	 * 1代表x(大版本)中,ver1>ver2,负数则相反,如(-1代表ver2>ver1)<br>
	 * 2代表z(次版本)中,ver1>ver2,负数相反<br>
	 * 3代表y(小版本)中,ver1>ver2,负数相反<br>
	 * */
	public static int compareToVer(String ver1,String ver2) {
		if(Objects.equals(ver1, ver2))return 0;
		if(ver1!=null&&ver2==null)return 1;
		if(ver1==null&&ver2!=null)return -1;
		String[] ver1s = ver1.split("\\.",3);
		String[] ver2s = ver2.split("\\.",3);
		for(int i=0;i<3;i++){
			if(ver1s.length>i&&ver2s.length>i){
				int c = Integer.valueOf(ver1s[i])-Integer.valueOf(ver2s[i]);
				if(c==0)continue;
				if(c>0)return i+1;
				else return -(i+1);
			}else if(ver1s.length>ver2s.length)return i+1;
				else return -(i+1);
		}
		return 0;
	}

	
}
